package com.mdb.open.trade.feign.dto.cus;


/*
 * Copyright (C), 2017-2019 澳发科技(MDB)
 * FileName: CustBaseInfoService.java
 * Author:   喻尊龙
 * Date:     2019-11-02
 * History:
 * <author>          <time>          <version>          <desc>
 * 喻尊龙         2019-11-02          V1.00             代码生成器初始生成代码
 * -----------------------------------------------------------
 * 作者姓名           修改时间           版本号            描述
 */

import com.mdb.bc.api.data.DataObjectBase;
import com.mdb.bc.api.enums.NationalityEnum;
import com.mdb.bc.validator.annotaion.validation.IdentityNo;
import com.mdb.bc.validator.annotaion.validation.NotAllEmpty;
import com.mdb.enums.DataChannelEnum;
import com.mdb.open.common.enums.trade.type.BusinessNatureTypeEnum;
import com.mdb.open.common.enums.trade.type.CertTypeEnum;
import com.mdb.open.common.enums.trade.type.CreditTypeEnum;
import com.mdb.open.common.enums.trade.type.MerchantsTypeEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.URL;

/**
 * 类描述：
 * 客户基本信息数据传输类
 *
 * @author 喻尊龙
 * @date 2019-11-02
 */
@NotAllEmpty(selected = {"nameCn", "nameEn", "namePt"}, message = "中文名称、英文名称、葡文名称至少有一项不能为空")
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@ApiModel(value = "CustBaseInfoDto", description = "客户基本信息Dto对象")
public class CustBaseInfoDto extends DataObjectBase {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "客户类型")
    private MerchantsTypeEnum customerType;

    /**
     * 核心客户号
     */
    @ApiModelProperty(value = "核心客户号")
    private String coreCustomerNo;


    /**
     * 中文名称
     */
    @ApiModelProperty(value = "中文名称")
    private String nameCn;

    /**
     * 英文名称
     */
    @ApiModelProperty(value = "英文名称")
    private String nameEn;

    /**
     * 葡文名称
     */
    @ApiModelProperty(value = "葡文名称")
    private String namePt;

    /**
     * 证件号码
     */
    @ApiModelProperty(value = "证件号码")
    private String creditCode;

    /**
     * 证件类型
     */
    @ApiModelProperty(value = "证件类型")
    private CreditTypeEnum creditType;

    /**
     * 法人（负责人）名称
     */
    @ApiModelProperty(value = "法人（负责人）名称")
    private String personName;

    /**
     * 法人（负责人）国籍
     */
    @ApiModelProperty(value = "法人（负责人）国籍")
    private NationalityEnum personNationality;

    public interface PersonCertTypeIdCardGroup {

    }


    /**
     * 法人（负责人）证件类型
     */
    /**
     * 证件类型
     */
    @ApiModelProperty(value = "法人（负责人）证件类型")
    private CertTypeEnum personCertType;

    /**
     * 法人（负责人）证件号码
     */
    @IdentityNo(groups = PersonCertTypeIdCardGroup.class)
    @ApiModelProperty(value = "法人（负责人）证件号码")
    private String personCertCode;

    /**
     * 法人（负责人）住址
     */
    @ApiModelProperty(value = "法人（负责人）住址")
    private String personAddress;

    /**
     * 企业官网
     */
    @URL
    @ApiModelProperty(value = "企业官网")
    private String website;

    /**
     * 经营性质
     */
    @ApiModelProperty(value = "经营性质")
    private BusinessNatureTypeEnum businessNature;

    /**
     * 所属地区
     */
    @ApiModelProperty(value = "所属地区")
    private NationalityEnum country;

    /**
     * 数据渠道
     */
    @ApiModelProperty(value = "数据渠道")
    private DataChannelEnum dataChannel;


    /**
     * 签署账号
     */
    @ApiModelProperty(value = "签署账号")
    private String signAccount;

}
